package main
import (
	"fmt"
	"go_code/projectExec/customer/service"
	"go_code/projectExec/customer/model"
)
type customerView struct{
	key string
	loop bool
	customerService *service.CustomerService
}
func (cv *customerView)list(){
	customers := cv.customerService.List()
	fmt.Println("编号\t姓名\t性别\t年龄\t电话\t邮箱\t")
	for i := 0 ;i < len(customers);i++ {
		fmt.Println(customers[i])
	}
}
func (cv *customerView)add(){
	fmt.Printf("请输入姓名：")
	name := ""
	fmt.Scanln(&name)
	fmt.Printf("请输入性别：")
	sex := ""
	fmt.Scanln(&sex)
	fmt.Printf("请输入年龄：")
	age := 0
	fmt.Scanln(&age)
	fmt.Printf("请输入电话：")
	phone := ""
	fmt.Scanln(&phone)
	fmt.Printf("请输入Email：")
	email := ""
	fmt.Scanln(&email)
	customer := model.CustomerFactory2(name,sex,age,phone,email)
	if cv.customerService.Add(customer){
		fmt.Println("----------------添加成功------------------")
	}
}
func (cv *customerView)delete(){
	fmt.Printf("请输入你要删除的用户的编号：")
	id := -1
	fmt.Scanln(&id)
	if id == -1{
		return
	}	
	fmt.Printf("确认是否删除？（y / n）：")
	choice := ""
	fmt.Scanln(&choice)
	if choice == "y"{
		if cv.customerService.Delete(id){
			fmt.Println("-------删除成功-------")
		}else{
			fmt.Println("-------删除失败，没有该用户-------")		
		}
	}else{
		fmt.Println("已取消操作......")
	}

}
func (cv *customerView)quit(){
	fmt.Printf("确认要退出系统吗？（y / n）：")
	choice := ""
	for{
		fmt.Scanln(&choice)
		if choice == "y" || choice == "n"{
			break
		}else{
			fmt.Printf("输入有误，请重新输入：")
		}
	}
	if choice == "y"{
		cv.loop = false
	}

}
func (cv *customerView)update(){
	fmt.Printf("请输入你要修改的用户编号：")
	id := -1
	fmt.Scanln(&id)
	if id == -1{
		return
	}
	if index,obj := cv.customerService.FindCustomerById(id);index != -1{
		fmt.Printf("修改姓名（%v）：",obj.Name)
		name:=""
		fmt.Scanln(&name)
		if name!=""{
			obj.Name = name
		}
		fmt.Printf("修改性别（%v）：",obj.Gender)
		gender:=""
		fmt.Scanln(&gender)
		if gender!=""{
			obj.Gender = gender
		}
		fmt.Printf("修改年龄（%v）：",obj.Age)
		age:=-1
		fmt.Scanln(&age)
		if age!=-1{
			obj.Age = age
		}
		fmt.Printf("修改电话号码（%v）：",obj.Phone)
		phone:=""
		fmt.Scanln(&phone)
		if phone!=""{
			obj.Phone = phone
		}
		fmt.Printf("修改邮箱（%v）：",obj.Email)
		email:=""
		fmt.Scanln(&email)
		if email!=""{
			obj.Email = email
		}
		if cv.customerService.Update(obj,index) {
			fmt.Println("--------------修改成功--------------")
		}else{
			fmt.Println("--------------修改失败--------------")
		}
	}else{
		fmt.Printf("抱歉，找不到该用户！")
		return
	}
}
func (cv *customerView)ShowMenu(){
	for{
		fmt.Println("\n-----------------客户信息管理系统-----------------")
		fmt.Println("-----------------1 添加用户")
		fmt.Println("-----------------2 修改用户")
		fmt.Println("-----------------3 删除用户")
		fmt.Println("-----------------4 客户列表")
		fmt.Println("-----------------5 退   出")
		fmt.Printf("-----------------请选择相应序号（1-5）：")
		fmt.Scanln(&cv.key)
		switch cv.key{
		case "1" :
			fmt.Println("-----------------添 加 用 户-----------------")
			cv.add()
		case "2" :
			fmt.Println("-----------------修 改 用 户-----------------")
			cv.update()
		case "3" :
			fmt.Println("-----------------删 除 用 户-----------------")
			cv.delete()
		case "4" :
			fmt.Println("-----------------客 户 列 表-----------------")
			cv.list()
		case "5" :
			cv.quit()
		default:
			fmt.Printf("您输入有误，请重新输入：")
		}
		if !cv.loop {
			break
		}
	}
	
	fmt.Println("已退出客户信息管理系统......")
}



func main(){
	cv := customerView{"",true,service.CustomerServiceFactory()}
	cv.ShowMenu()
}